import { Body, Controller, Get,Post } from '@nestjs/common';
import { BannerService } from 'src/services/banner/banner.service';
import { IBanner } from 'src/types/banner.interface';
import HttpResponse from 'src/types/http.response.interface';


//定义控制器的装饰器，设置路径的前缀为banner
@Controller('banner')
export class BannerController {


    /**
     *  在app.module.ts文件中的providers注入了BannerService,导入的文件初始化BannerController时会自动引用到BannerService
     *  //指定模块使用哪些服务提供者
        providers: [AppService, BannerService],
     * @param bannerService 
     */
    /*
    private readonly bannerService:BannerService;
    constructor(){
        //this.bannerService=bannerService;
        this.bannerService=new BannerService();
    }
    */

    //等价于上面的写法
    constructor(private readonly  bannerService:BannerService){

    }


    
    
    /**
     * get请求装饰器，和java一样的
     * 为空或者不写，前端访问http://localhost:9898/banner 则会自动访问该方法
     */
    @Get('')  
    async findAllActive():Promise<HttpResponse<IBanner[]>>{
       const data = await this.bannerService.findService({isActive:true});
       console.log('data====',data);
       if(Array.isArray(data)){
        return {
            success:true,
            message:"查询数据成功",
            data,
        }
       }
       else{
        return {
            success:false,
            message:"查询数据失败",
            data:[],
        }
       }
       
    }

    
    /**
     * 用来通过postman或者insomnia来导入数据
     * 在浏览器中输入http://localhost:9898/banner/create
     */
    @Post('/create')
    //DTO Data Transfer Object 数据传输对象，当客户端把数据传送到后台的
    async create(@Body() requestParamsBody:IBanner|IBanner[]) {

        console.log('传入的数据===',requestParamsBody);
        //使用Body参数装饰器用来获取 请求体的数据并保存在createBannerDTO中

        const data = await this.bannerService.createService(requestParamsBody);

        console.log('返回的数据===',data);

        //data里的文档其实是mongoose专用文档 对象，当返回给客户端的时候还需要调用toJSON转成json返回
        return data;
    }



    @Get("/getOne")
    async findById(){
        return "aaaaaa"
    }

}



